package Negocio;

import java.util.ArrayList;
import java.util.List;

import DTO.DTO_Comanda;
import DTO.DTO_Mesa;
import DTO.DTO_MesaComposite;
import DTO.DTO_MesaSimple;
import DTO.DTO_Pedido;

public class MesaComposite extends Mesa {

	private List<Mesa> mesas;
	
	//Constructores
	
	public MesaComposite(int idMesa, Mozo mozo, int numero,	List<Pedido> pedidos, int cantPersonas, String estado,
			int cantMaxPersonas, List<Comanda> comandas, List<Mesa> mesas) {
		super(idMesa, mozo, numero, pedidos, cantPersonas, estado,
				cantMaxPersonas, comandas);
		this.mesas = mesas;
	}
	
	public MesaComposite(int idMesa, Mozo mozo, int numero,
			List<Pedido> pedidos, int cantPersonas, String estado,
			int cantMaxPersonas, List<Comanda> comandas) {
		super(idMesa, mozo, numero, pedidos, cantPersonas, estado, cantMaxPersonas,
				comandas);
		// TODO Auto-generated constructor stub
	}

	public MesaComposite(DTO_MesaComposite mesa) {
		super(mesa);
		this.mesas = new ArrayList<Mesa>();
		for(DTO_Mesa m : mesa.getMesas() ){
			if(m instanceof DTO_MesaSimple)
				mesas.add(new MesaSimple((DTO_MesaSimple) m));
			else
				mesas.add(new MesaComposite((DTO_MesaComposite) m));
		}

	}

	public MesaComposite() {
		
	}

	//GET & SET
	public List<Mesa> getMesas() {
		return mesas;
	}

	public void setMesas(List<Mesa> mesas) {
		this.mesas = mesas;
	}


	//METODOS DE NEGOCIO

	@Override
	public DTO_Mesa toDTO() {
		DTO_MesaComposite mc = new DTO_MesaComposite();
		mc.setCantMaxPersonas(cantMaxPersonas);
		mc.setCantPersonas(cantPersonas);
		List<DTO_Comanda> aux_com = new ArrayList<DTO_Comanda>();
		for(Comanda e: this.comandas){
			aux_com.add(e.toDTO());
		}
		mc.setComandas(aux_com);
		mc.setEstado(estado);
		mc.setIdMesa(idMesa);
		List<DTO_Mesa> aux_mesa = new ArrayList<DTO_Mesa>();
		for(Mesa e: mesas){
			aux_mesa.add(e.toDTO());
		}
		mc.setMesas(aux_mesa);
		mc.setMozo(mozo.toDTO());
		mc.setNumero(numero);
		List<DTO_Pedido> aux_p = new ArrayList<DTO_Pedido>();
		for(Pedido e: pedidos){
			aux_p.add(e.toDTO());
		}
		mc.setPedidos(aux_p);
		return mc;
	}
	
	
	

	

	
	

}
